package com.leha.forum.lehare.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.leha.forum.lehare.dto.PostEditDTO;
import com.leha.forum.lehare.entity.Post;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.function.Supplier;

/**
* @author Administrator
* @description 针对表【post】的数据库操作Service
* @createDate 2025-04-15 21:44:28
*/
public interface PostService extends IService<Post> {
    /**
     * 发布新帖子
     *
     * @param userId 用户ID
     * @param dto 帖子数据
     * @return 是否发布成功
     */
    boolean publishNewPost(Long userId, PostEditDTO dto);

    default IPage<Post> getPosts(Long page, Long size) {
        return this.getPosts(page, size, QueryWrapper::new);
    }

    IPage<Post> getPosts(Long page, Long size, Supplier<QueryWrapper<Post>> queryWrapperSupplier);

    /**
     * 设置置顶帖子
     *
     * @param postId 帖子ID
     * @param value Boolean
     * @return 操作结果
     */
    boolean setTop(Long postId, Boolean value);

    /**
     * 设置精华帖子
     *
     * @param postId 帖子ID
     * @param value Boolean
     * @return 操作结果
     */
    boolean setStar(Long postId, Boolean value);

    /**
     * 帖子阅读量加一
     *
     * @param postId 帖子ID
     * @return 操作结果
     */
    boolean increaseViewCount(Long postId);
}
